PostgreSQL PGPOOL-II

1 背景知识

PGPOOL-IIPostgreSQL 服务器与 PostgreSQL 客户端之间的中间件。采用 BSDMIT 许可证发布。
PGPOOL-II 提供以下功能:

2 PGPOOL-II 功能介绍

2.1 Pgpool-II 应用兼容性

  1. PGPOOL-II 使用 PostgreSQL 的服务端和客户端协议,可以在服务端和客户端之间转发消息。
  2. 客户端认为 PGPOOL-II 是数据库服务器。
  3. 服务端认为 PGPOOL-II 是客户端。
  4. 所以 PGPOOL-II 对客户端和服务器是透明的,现有的数据库应用几乎不需要任何改动就可以启用 PGPOOL-II

2.2 高可用功能

  1. PGPOOL-II 可以使用多个 PostgreSQL 服务器提高可用性。
  2. 当某个节点发生故障,可以从服务器池移除损坏的服务器,保证业务连续性。这个功能叫做 主备切换
  3. PGPOOL-II 还提供一个 watchdog 避免误报和脑裂的问题。

2.3 负载均衡

  1. PGPOOL-II 可以将查询分配给多个 PostgreSQL 服务器,提高读性能。这种功能叫做 负载均衡
  2. 写入查询会发送到 Master 服务。
  3. 读操作会发送给 Standby 服务。

2.4 连接池

  1. PGPOOL-II 维持 PostgreSQL 服务器的连接。
  2. 这些连接可以重复使用,减少链接开销,提高系统整体吞吐率。

2.5 流复制在线恢复

1、只需要一条命令就能够实现数据库节点的在线恢复。
2、在线恢复与 Automatic Failover 一起使用时:
(1)自动将已经修复后的节点添加为备节点。
(2)还可以新增节点。

2.6 连接限制

PostgreSQL 数据库最大并发连接数是有限的,当达到这个限制时,新的连接将被拒绝。 PGPOOL-II 也有最大连接数限制,但是超过限制的连接会放在队列里面,不会立刻返回错误。

2.7 看门狗(watchlog)

看门狗可以在多个 PGPOOL-II 之间通信,避免单点故障和脑裂。
1、如果要避免脑裂至少需要三个 PGPOOL-II 节点。
2、看门狗对其他节点的 PGPOOL-II 进行相互兼容。
3、如果Master PGPOOL-II 发生故障,Standby 将会升主。

2.8 语句缓存查询

1、语句缓存查询能够保存一个 SELECT 语句和对应的查询结果。
2、如果出现了相同的 SELECT , PGPOOL-II 将从缓存中取出结果值。
3、由于不涉及 SQL 解析和 PostgreSQL 的访问,所以取出速度非常快。
4、但是由于查询结果在变化,所以每次可能会增加存储数据的开销。

Note

更多功能和说明请参考:官方网站

3 PGPOOL-II 实战

PGPOOL-II 原理与架构
PGPOOL-II 环境准备
PGPOOL-II YUM部署
PGPOOL-II 源码部署
PGPOOL-II 源码配置
PGPOOL-II 日常维护
PGPOOL-II 编译安装文档